package cn.bugstack.ai.model;

import lombok.*;
import java.time.LocalDateTime;
import java.util.Map;

/**
 * 溯源记录模型
 * 
 * @author bugstack
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class TraceRecord {
    /**
     * 溯源ID
     */
    private String traceId;
    
    /**
     * 步骤ID
     */
    private Integer stepId;
    
    /**
     * 时间戳
     */
    private LocalDateTime timestamp;
    
    /**
     * 操作动作
     */
    private String action;
    
    /**
     * 描述信息
     */
    private String description;
    
    /**
     * 输入信息
     */
    private TraceInput input;
    
    /**
     * 输出信息
     */
    private TraceOutput output;
    
    /**
     * 执行耗时（毫秒）
     */
    private Long duration;
    
    /**
     * 状态：success, failed, pending
     */
    private String status;
    
    /**
     * 溯源输入信息
     */
    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    public static class TraceInput {
        /**
         * 提示词
         */
        private String prompt;
        
        /**
         * 上下文
         */
        private String context;
        
        /**
         * 参数
         */
        private Map<String, Object> parameters;
    }
    
    /**
     * 溯源输出信息
     */
    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    public static class TraceOutput {
        /**
         * 输出内容
         */
        private String content;
        
        /**
         * 提示词 tokens
         */
        private Integer promptTokens;
        
        /**
         * 完成 tokens
         */
        private Integer completionTokens;
        
        /**
         * 总 tokens
         */
        private Integer totalTokens;
        
        /**
         * 模型名称
         */
        private String model;
        
        /**
         * 完成原因
         */
        private String finishReason;
    }
}
